﻿using MediatR;
using MES.Server.API.Dto.QualityInspection_DTO;
using ReturnValue;

namespace MES.Server.API.Application.Command.QualityInspection_ModCom
{
    /// <summary>
    /// 获取质检记录列表（返回DTO分页）
    /// </summary>
    /// <summary>
    /// 质检记录查询命令（支持三表联查+筛选+分页）
    /// </summary>
    public class QualityInspectionQueryCommand : IRequest<ApiResult<ApiPaging<QualityInspectionDTO>>>
    {
        /// <summary>
        /// 当前页（默认第1页）
        /// </summary>
        public int Index { get; set; } = 1;

        /// <summary>
        /// 每页条数（默认20条）
        /// </summary>
        public int Size { get; set; } = 20;

        /// <summary>
        /// 物料群组编号（下拉框筛选，可空）
        /// </summary>
        public string? MaterialGroupCode { get; set; }

        /// <summary>
        /// 生产编号（下拉框筛选，可空）
        /// </summary>
        public string? ProduceCode { get; set; }

        /// <summary>
        /// 质检单号（文本框模糊查询，可空）
        /// </summary>
        public string? InspectionNumber { get; set; }
    }

    /// <summary>
    /// 质检记录添加命令  没问题
    /// </summary>
    public class QualityInspectionCreateCommands : IRequest<ApiResult<int>>
    {
        /// <summary>
        /// 关联生产工单ID（必选）
        /// </summary>
        public long ProductionOrderId { get; set; }

        /// <summary>
        /// 关联物料群组ID（必选）
        /// </summary>
        public long MaterialGroupId { get; set; }

        /// <summary>
        /// 检测数量（必选，需与生产工单数量一致）
        /// </summary>
        public int InspectedQuantity { get; set; }

        /// <summary>
        /// 合格数量（必选，0 ≤ 合格数量 ≤ 检测数量）
        /// </summary>
        public int QualifiedQuantity { get; set; }

        /// <summary>
        /// 检测人员（必选）
        /// </summary>
        public string Inspector { get; set; }

        /// <summary>
        /// 创建人（审计字段，必选）
        /// </summary>
        public string CreaterPeople { get; set; }
    }

     

    /// <summary>
    /// 更新质检记录（传入DTO）
    /// </summary>
    public class UpdateQualityInspectionCommands : IRequest<ApiResult<QualityInspectionDto>>
    {
        public UpdateQualityInspectionDto Dto { get; set; } // 更新参数DTO
    }

    /// <summary>
    /// 删除质检记录
    /// </summary>
    public class DeleteQualityInspectionCommands : IRequest<ApiResult<object>>
    {
        public long Id { get; set; } // 质检记录ID
    }

    /// <summary>
    /// 获取生产工单-物料群组二级联动数据
    /// </summary>
    public class GetProductionCascaderCommands : IRequest<ApiResult<ProductionCascaderDto>>
    {
        // 无参数，仅返回生产完成率100%的工单
    }
}
